package com.jms.framework.aop.management;

import com.jms.framework.exception.PropertyAlreadySetException;

public class AopManagementAdapter {
    private AopManagement aopManagement;

    private static boolean aopManagementIsOpen = false;

    private AopManagementAdapter() {
    }

    private volatile static AopManagementAdapter instance;

    public static AopManagementAdapter getInstance() {
        if (instance == null) {
            synchronized (AopManagementAdapter.class) {
                if (instance == null) {
                    instance = new AopManagementAdapter();
                }
            }
        }
        return instance;
    }

    public void setAopManagement(AopManagement aopManagement) {
        if (this.aopManagement != null) {
            throw new PropertyAlreadySetException(AopManagement.class, "aopManagement");
        }
        this.aopManagement = aopManagement;
    }

    public AopManagement getAopManagement() {
        return aopManagement;
    }

    public Object createAopProxy(Object target) {
        return aopManagement.createAopProxy(target);
    }

    public static boolean aopManagementIsOpen() {
        return aopManagementIsOpen;
    }

    public static void openAopManagement() {
        aopManagementIsOpen = true;
    }
}
